package com.wltt.product.ahuthr.service;

import com.wltt.product.ahuthr.model.ResultData;
import com.wltt.product.ahuthr.model.po.SalaryPO;
import com.wltt.product.ahuthr.model.vo.*;
import com.wltt.product.ahuthr.service.base.BaseService;
import jakarta.servlet.http.HttpServletResponse;


/**
 * @ClassName: SalaryService
 * @Description: 逻辑服务类<br />
 * @Date: 2024-05-30 14:34:21
 * @Author yanggl
 */
public interface SalaryService extends BaseService<SalaryPO, Long> {

    /**
     * 分页查询人员薪资
     *
     * @return
     */
    ResultData listUserSalary(ListUserSalaryReq listUserSalaryReq);

    /**
     * 导出
     *
     * @return
     */
    void exportSalary(HttpServletResponse response);

    /**
     * 分页查询未起薪人员
     *
     * @return
     */
    ResultData listUserNoSalary(ListUserNoSalaryReq listUserNoSalaryReq);

    /**
     * 薪资详情
     *
     * @return
     */
    ResultData salaryDetail(SalaryDetailReq salaryDetailReq);

    /**
     * 计算薪资
     *
     * @return
     */
    ResultData calculateSalary(CalculateSalaryReq calculateSalaryReq);

    /**
     * 计算公积金
     *
     * @return
     */
    ResultData calculateHouseFunds(CalculateHouseFundsReq calculateHouseFundsReq);

    /**
     * 计算社保
     *
     * @return
     */
    ResultData calculateInsurance(CalculateInsuranceReq calculateInsuranceReq);

    /**
     * 更新薪资
     *
     * @return
     */
    ResultData updateSalary(UpdateSalaryReq updateSalaryReq);

    /**
     * 新增薪资
     *
     * @return
     */
    ResultData addSalary(AddSalaryReq addSalaryReq);

    /**
     * 定薪
     *
     * @return
     */
    ResultData makeSalary(MakeSalaryReq makeSalaryReq);

    /**
     * 复核定薪
     *
     * @return
     */
    ResultData recheckSalary(RecheckSalaryReq recheckSalaryReq);
}